/**
 * <copyright>
 * </copyright>
 *
 */
package de.sabram.upb.specs.lido.impl;

import de.sabram.upb.specs.lido.Alt;
import de.sabram.upb.specs.lido.Alts;
import de.sabram.upb.specs.lido.Attr;
import de.sabram.upb.specs.lido.AttrComp;
import de.sabram.upb.specs.lido.AttrDef;
import de.sabram.upb.specs.lido.AttrDefId;
import de.sabram.upb.specs.lido.AttrDefIds;
import de.sabram.upb.specs.lido.AttrDefs;
import de.sabram.upb.specs.lido.AttrDefsOpt;
import de.sabram.upb.specs.lido.AttrName;
import de.sabram.upb.specs.lido.AttrNames;
import de.sabram.upb.specs.lido.AttrSpec;
import de.sabram.upb.specs.lido.AttrUseId;
import de.sabram.upb.specs.lido.AttributeGrammar;
import de.sabram.upb.specs.lido.ChainName;
import de.sabram.upb.specs.lido.ChainNames;
import de.sabram.upb.specs.lido.ChainSpec;
import de.sabram.upb.specs.lido.CompPart;
import de.sabram.upb.specs.lido.Computation;
import de.sabram.upb.specs.lido.Computations;
import de.sabram.upb.specs.lido.Compute;
import de.sabram.upb.specs.lido.DefAttr;
import de.sabram.upb.specs.lido.DepAttr;
import de.sabram.upb.specs.lido.DepAttrs;
import de.sabram.upb.specs.lido.DepClause;
import de.sabram.upb.specs.lido.Dependence;
import de.sabram.upb.specs.lido.ExpandOpt;
import de.sabram.upb.specs.lido.Expression;
import de.sabram.upb.specs.lido.ExpressionDep;
import de.sabram.upb.specs.lido.InheritOpt;
import de.sabram.upb.specs.lido.InheritSym;
import de.sabram.upb.specs.lido.InheritSyms;
import de.sabram.upb.specs.lido.LidoFactory;
import de.sabram.upb.specs.lido.LidoPackage;
import de.sabram.upb.specs.lido.Loop;
import de.sabram.upb.specs.lido.Param;
import de.sabram.upb.specs.lido.Params;
import de.sabram.upb.specs.lido.ParamsOpt;
import de.sabram.upb.specs.lido.PlainComp;
import de.sabram.upb.specs.lido.Production;
import de.sabram.upb.specs.lido.RemoteAttr;
import de.sabram.upb.specs.lido.RemoteAttrs;
import de.sabram.upb.specs.lido.RemoteClause;
import de.sabram.upb.specs.lido.RemoteExpression;
import de.sabram.upb.specs.lido.RhsAttrs;
import de.sabram.upb.specs.lido.RuleId;
import de.sabram.upb.specs.lido.RuleSpec;
import de.sabram.upb.specs.lido.RuleSpecId;
import de.sabram.upb.specs.lido.Shield;
import de.sabram.upb.specs.lido.ShieldClause;
import de.sabram.upb.specs.lido.ShieldSym;
import de.sabram.upb.specs.lido.ShieldSyms;
import de.sabram.upb.specs.lido.Specification;
import de.sabram.upb.specs.lido.Specifications;
import de.sabram.upb.specs.lido.Subtree;
import de.sabram.upb.specs.lido.SymAttrSpec;
import de.sabram.upb.specs.lido.SymCompSpec;
import de.sabram.upb.specs.lido.SymOcc;
import de.sabram.upb.specs.lido.SymbolDefId;
import de.sabram.upb.specs.lido.SymbolDefIds;
import de.sabram.upb.specs.lido.SymbolId;
import de.sabram.upb.specs.lido.SymbolRef;
import de.sabram.upb.specs.lido.SyntId;
import de.sabram.upb.specs.lido.SyntLit;
import de.sabram.upb.specs.lido.SyntUnit;
import de.sabram.upb.specs.lido.SyntUnits;
import de.sabram.upb.specs.lido.TermSpec;
import de.sabram.upb.specs.lido.TypeId;

import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;

import org.eclipse.emf.ecore.impl.EPackageImpl;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class LidoPackageImpl extends EPackageImpl implements LidoPackage
{
  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attributeGrammarEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass specificationsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass specificationEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass termSpecEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass symAttrSpecEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass symbolDefIdsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass symbolDefIdEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrDefsOptEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrDefsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrDefEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrDefIdsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrDefIdEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass typeIdEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrSpecEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrNamesEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrNameEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass chainSpecEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass chainNamesEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass chainNameEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass ruleSpecEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass ruleSpecIdEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass ruleIdEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass productionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass altsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass altEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass syntUnitsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass syntUnitEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass syntLitEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass syntIdEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass compPartEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass computationsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass computationEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass computeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass plainCompEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrCompEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass defAttrEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass attrUseIdEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass symOccEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass symbolIdEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass expressionDepEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass expressionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass symbolRefEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass rhsAttrsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass depClauseEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass dependenceEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass depAttrsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass depAttrEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass paramsOptEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass paramsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass paramEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass loopEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass remoteExpressionEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass remoteClauseEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass remoteAttrsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass remoteAttrEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass expandOptEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass subtreeEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass shieldEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass shieldClauseEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass shieldSymsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass shieldSymEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass symCompSpecEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass inheritOptEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass inheritSymsEClass = null;

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private EClass inheritSymEClass = null;

  /**
   * Creates an instance of the model <b>Package</b>, registered with
   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
   * package URI value.
   * <p>Note: the correct way to create the package is via the static
   * factory method {@link #init init()}, which also performs
   * initialization of the package, or returns the registered package,
   * if one already exists.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see org.eclipse.emf.ecore.EPackage.Registry
   * @see de.sabram.upb.specs.lido.LidoPackage#eNS_URI
   * @see #init()
   * @generated
   */
  private LidoPackageImpl()
  {
    super(eNS_URI, LidoFactory.eINSTANCE);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private static boolean isInited = false;

  /**
   * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
   * 
   * <p>This method is used to initialize {@link LidoPackage#eINSTANCE} when that field is accessed.
   * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @see #eNS_URI
   * @see #createPackageContents()
   * @see #initializePackageContents()
   * @generated
   */
  public static LidoPackage init()
  {
    if (isInited) return (LidoPackage)EPackage.Registry.INSTANCE.getEPackage(LidoPackage.eNS_URI);

    // Obtain or create and register package
    LidoPackageImpl theLidoPackage = (LidoPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof LidoPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new LidoPackageImpl());

    isInited = true;

    // Create package meta-data objects
    theLidoPackage.createPackageContents();

    // Initialize created meta-data
    theLidoPackage.initializePackageContents();

    // Mark meta-data to indicate it can't be changed
    theLidoPackage.freeze();

  
    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(LidoPackage.eNS_URI, theLidoPackage);
    return theLidoPackage;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttributeGrammar()
  {
    return attributeGrammarEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAttributeGrammar_Specifications()
  {
    return (EReference)attributeGrammarEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSpecifications()
  {
    return specificationsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSpecification()
  {
    return specificationEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTermSpec()
  {
    return termSpecEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSymAttrSpec()
  {
    return symAttrSpecEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSymbolDefIds()
  {
    return symbolDefIdsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSymbolDefIds_TypeId()
  {
    return (EReference)symbolDefIdsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSymbolDefIds_AttrDefsOpt()
  {
    return (EReference)symbolDefIdsEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSymbolDefIds_SymbolDefIds()
  {
    return (EReference)symbolDefIdsEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSymbolDefId()
  {
    return symbolDefIdEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getSymbolDefId_Name()
  {
    return (EAttribute)symbolDefIdEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSymbolDefId_InheritOpt()
  {
    return (EReference)symbolDefIdEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSymbolDefId_CompPart()
  {
    return (EReference)symbolDefIdEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrDefsOpt()
  {
    return attrDefsOptEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAttrDefsOpt_AttrDefs()
  {
    return (EReference)attrDefsOptEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrDefs()
  {
    return attrDefsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAttrDefs_AttrDefs()
  {
    return (EReference)attrDefsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrDef()
  {
    return attrDefEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrDefIds()
  {
    return attrDefIdsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAttrDefIds_TypeId()
  {
    return (EReference)attrDefIdsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAttrDefIds_AttrDefIds()
  {
    return (EReference)attrDefIdsEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrDefId()
  {
    return attrDefIdEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getAttrDefId_Name()
  {
    return (EAttribute)attrDefIdEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getTypeId()
  {
    return typeIdEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getTypeId_Name()
  {
    return (EAttribute)typeIdEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrSpec()
  {
    return attrSpecEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrNames()
  {
    return attrNamesEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAttrNames_TypeId()
  {
    return (EReference)attrNamesEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAttrNames_AttrNames()
  {
    return (EReference)attrNamesEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrName()
  {
    return attrNameEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getAttrName_Name()
  {
    return (EAttribute)attrNameEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getChainSpec()
  {
    return chainSpecEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getChainNames()
  {
    return chainNamesEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getChainNames_TypeId()
  {
    return (EReference)chainNamesEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getChainNames_ChainNames()
  {
    return (EReference)chainNamesEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getChainName()
  {
    return chainNameEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getChainName_Name()
  {
    return (EAttribute)chainNameEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRuleSpec()
  {
    return ruleSpecEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRuleSpec_RuleSpecId()
  {
    return (EReference)ruleSpecEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRuleSpec_Production()
  {
    return (EReference)ruleSpecEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRuleSpec_CompPart()
  {
    return (EReference)ruleSpecEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRuleSpecId()
  {
    return ruleSpecIdEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRuleSpecId_RuleId()
  {
    return (EReference)ruleSpecIdEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRuleId()
  {
    return ruleIdEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRuleId_Name()
  {
    return (EAttribute)ruleIdEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getProduction()
  {
    return productionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAlts()
  {
    return altsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAlts_Alts()
  {
    return (EReference)altsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAlt()
  {
    return altEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAlt_SyntId()
  {
    return (EReference)altEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSyntUnits()
  {
    return syntUnitsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSyntUnits_SyntUnits()
  {
    return (EReference)syntUnitsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSyntUnit()
  {
    return syntUnitEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getSyntUnit_Name()
  {
    return (EAttribute)syntUnitEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSyntLit()
  {
    return syntLitEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSyntId()
  {
    return syntIdEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSyntId_SyntUnits()
  {
    return (EReference)syntIdEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSyntId_Alts()
  {
    return (EReference)syntIdEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getCompPart()
  {
    return compPartEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getCompPart_Computations()
  {
    return (EReference)compPartEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getComputations()
  {
    return computationsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getComputations_Computations()
  {
    return (EReference)computationsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getComputation()
  {
    return computationEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getCompute()
  {
    return computeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getPlainComp()
  {
    return plainCompEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrComp()
  {
    return attrCompEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDefAttr()
  {
    return defAttrEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDefAttr_ExpressionDep()
  {
    return (EReference)defAttrEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDefAttr_Loop()
  {
    return (EReference)defAttrEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDefAttr_ChainexpressionDep()
  {
    return (EReference)defAttrEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttr()
  {
    return attrEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAttr_SymOcc()
  {
    return (EReference)attrEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getAttr_AttrUseId()
  {
    return (EReference)attrEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getAttrUseId()
  {
    return attrUseIdEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getAttrUseId_Name()
  {
    return (EAttribute)attrUseIdEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSymOcc()
  {
    return symOccEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSymOcc_SymbolId()
  {
    return (EReference)symOccEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSymbolId()
  {
    return symbolIdEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getSymbolId_Name()
  {
    return (EAttribute)symbolIdEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSymbolId_AttrUseId()
  {
    return (EReference)symbolIdEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExpressionDep()
  {
    return expressionDepEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExpression()
  {
    return expressionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExpression_DepClause()
  {
    return (EReference)expressionEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExpression_Attr()
  {
    return (EReference)expressionEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExpression_RhsAttrs()
  {
    return (EReference)expressionEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getExpression_Name()
  {
    return (EAttribute)expressionEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExpression_Params()
  {
    return (EReference)expressionEClass.getEStructuralFeatures().get(4);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExpression_RemoteExpression()
  {
    return (EReference)expressionEClass.getEStructuralFeatures().get(5);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getExpression_SymbolRef()
  {
    return (EReference)expressionEClass.getEStructuralFeatures().get(6);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSymbolRef()
  {
    return symbolRefEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSymbolRef_SymbolId()
  {
    return (EReference)symbolRefEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRhsAttrs()
  {
    return rhsAttrsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EAttribute getRhsAttrs_Name()
  {
    return (EAttribute)rhsAttrsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDepClause()
  {
    return depClauseEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDependence()
  {
    return dependenceEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDepAttrs()
  {
    return depAttrsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getDepAttrs_DepAttrs()
  {
    return (EReference)depAttrsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getDepAttr()
  {
    return depAttrEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getParamsOpt()
  {
    return paramsOptEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getParamsOpt_Params()
  {
    return (EReference)paramsOptEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getParams()
  {
    return paramsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getParams_Params()
  {
    return (EReference)paramsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getParam()
  {
    return paramEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getLoop()
  {
    return loopEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLoop_ExpressionDep()
  {
    return (EReference)loopEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLoop_Attr()
  {
    return (EReference)loopEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getLoop_ExpressionDep_right()
  {
    return (EReference)loopEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRemoteExpression()
  {
    return remoteExpressionEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRemoteClause()
  {
    return remoteClauseEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRemoteAttrs()
  {
    return remoteAttrsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getRemoteAttrs_RemoteAttrs()
  {
    return (EReference)remoteAttrsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getRemoteAttr()
  {
    return remoteAttrEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getExpandOpt()
  {
    return expandOptEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSubtree()
  {
    return subtreeEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSubtree_RemoteClause()
  {
    return (EReference)subtreeEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSubtree_Shield()
  {
    return (EReference)subtreeEClass.getEStructuralFeatures().get(1);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSubtree_ExpandOpt()
  {
    return (EReference)subtreeEClass.getEStructuralFeatures().get(2);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getSubtree_SymOcc()
  {
    return (EReference)subtreeEClass.getEStructuralFeatures().get(3);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getShield()
  {
    return shieldEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getShieldClause()
  {
    return shieldClauseEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getShieldClause_ShieldSym()
  {
    return (EReference)shieldClauseEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getShieldSyms()
  {
    return shieldSymsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getShieldSyms_ShieldSyms()
  {
    return (EReference)shieldSymsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getShieldSym()
  {
    return shieldSymEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getSymCompSpec()
  {
    return symCompSpecEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getInheritOpt()
  {
    return inheritOptEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getInheritSyms()
  {
    return inheritSymsEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EReference getInheritSyms_InheritSyms()
  {
    return (EReference)inheritSymsEClass.getEStructuralFeatures().get(0);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public EClass getInheritSym()
  {
    return inheritSymEClass;
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public LidoFactory getLidoFactory()
  {
    return (LidoFactory)getEFactoryInstance();
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isCreated = false;

  /**
   * Creates the meta-model objects for the package.  This method is
   * guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void createPackageContents()
  {
    if (isCreated) return;
    isCreated = true;

    // Create classes and their features
    attributeGrammarEClass = createEClass(ATTRIBUTE_GRAMMAR);
    createEReference(attributeGrammarEClass, ATTRIBUTE_GRAMMAR__SPECIFICATIONS);

    specificationsEClass = createEClass(SPECIFICATIONS);

    specificationEClass = createEClass(SPECIFICATION);

    termSpecEClass = createEClass(TERM_SPEC);

    symAttrSpecEClass = createEClass(SYM_ATTR_SPEC);

    symbolDefIdsEClass = createEClass(SYMBOL_DEF_IDS);
    createEReference(symbolDefIdsEClass, SYMBOL_DEF_IDS__TYPE_ID);
    createEReference(symbolDefIdsEClass, SYMBOL_DEF_IDS__ATTR_DEFS_OPT);
    createEReference(symbolDefIdsEClass, SYMBOL_DEF_IDS__SYMBOL_DEF_IDS);

    symbolDefIdEClass = createEClass(SYMBOL_DEF_ID);
    createEAttribute(symbolDefIdEClass, SYMBOL_DEF_ID__NAME);
    createEReference(symbolDefIdEClass, SYMBOL_DEF_ID__INHERIT_OPT);
    createEReference(symbolDefIdEClass, SYMBOL_DEF_ID__COMP_PART);

    attrDefsOptEClass = createEClass(ATTR_DEFS_OPT);
    createEReference(attrDefsOptEClass, ATTR_DEFS_OPT__ATTR_DEFS);

    attrDefsEClass = createEClass(ATTR_DEFS);
    createEReference(attrDefsEClass, ATTR_DEFS__ATTR_DEFS);

    attrDefEClass = createEClass(ATTR_DEF);

    attrDefIdsEClass = createEClass(ATTR_DEF_IDS);
    createEReference(attrDefIdsEClass, ATTR_DEF_IDS__TYPE_ID);
    createEReference(attrDefIdsEClass, ATTR_DEF_IDS__ATTR_DEF_IDS);

    attrDefIdEClass = createEClass(ATTR_DEF_ID);
    createEAttribute(attrDefIdEClass, ATTR_DEF_ID__NAME);

    typeIdEClass = createEClass(TYPE_ID);
    createEAttribute(typeIdEClass, TYPE_ID__NAME);

    attrSpecEClass = createEClass(ATTR_SPEC);

    attrNamesEClass = createEClass(ATTR_NAMES);
    createEReference(attrNamesEClass, ATTR_NAMES__TYPE_ID);
    createEReference(attrNamesEClass, ATTR_NAMES__ATTR_NAMES);

    attrNameEClass = createEClass(ATTR_NAME);
    createEAttribute(attrNameEClass, ATTR_NAME__NAME);

    chainSpecEClass = createEClass(CHAIN_SPEC);

    chainNamesEClass = createEClass(CHAIN_NAMES);
    createEReference(chainNamesEClass, CHAIN_NAMES__TYPE_ID);
    createEReference(chainNamesEClass, CHAIN_NAMES__CHAIN_NAMES);

    chainNameEClass = createEClass(CHAIN_NAME);
    createEAttribute(chainNameEClass, CHAIN_NAME__NAME);

    ruleSpecEClass = createEClass(RULE_SPEC);
    createEReference(ruleSpecEClass, RULE_SPEC__RULE_SPEC_ID);
    createEReference(ruleSpecEClass, RULE_SPEC__PRODUCTION);
    createEReference(ruleSpecEClass, RULE_SPEC__COMP_PART);

    ruleSpecIdEClass = createEClass(RULE_SPEC_ID);
    createEReference(ruleSpecIdEClass, RULE_SPEC_ID__RULE_ID);

    ruleIdEClass = createEClass(RULE_ID);
    createEAttribute(ruleIdEClass, RULE_ID__NAME);

    productionEClass = createEClass(PRODUCTION);

    altsEClass = createEClass(ALTS);
    createEReference(altsEClass, ALTS__ALTS);

    altEClass = createEClass(ALT);
    createEReference(altEClass, ALT__SYNT_ID);

    syntUnitsEClass = createEClass(SYNT_UNITS);
    createEReference(syntUnitsEClass, SYNT_UNITS__SYNT_UNITS);

    syntUnitEClass = createEClass(SYNT_UNIT);
    createEAttribute(syntUnitEClass, SYNT_UNIT__NAME);

    syntLitEClass = createEClass(SYNT_LIT);

    syntIdEClass = createEClass(SYNT_ID);
    createEReference(syntIdEClass, SYNT_ID__SYNT_UNITS);
    createEReference(syntIdEClass, SYNT_ID__ALTS);

    compPartEClass = createEClass(COMP_PART);
    createEReference(compPartEClass, COMP_PART__COMPUTATIONS);

    computationsEClass = createEClass(COMPUTATIONS);
    createEReference(computationsEClass, COMPUTATIONS__COMPUTATIONS);

    computationEClass = createEClass(COMPUTATION);

    computeEClass = createEClass(COMPUTE);

    plainCompEClass = createEClass(PLAIN_COMP);

    attrCompEClass = createEClass(ATTR_COMP);

    defAttrEClass = createEClass(DEF_ATTR);
    createEReference(defAttrEClass, DEF_ATTR__EXPRESSION_DEP);
    createEReference(defAttrEClass, DEF_ATTR__LOOP);
    createEReference(defAttrEClass, DEF_ATTR__CHAINEXPRESSION_DEP);

    attrEClass = createEClass(ATTR);
    createEReference(attrEClass, ATTR__SYM_OCC);
    createEReference(attrEClass, ATTR__ATTR_USE_ID);

    attrUseIdEClass = createEClass(ATTR_USE_ID);
    createEAttribute(attrUseIdEClass, ATTR_USE_ID__NAME);

    symOccEClass = createEClass(SYM_OCC);
    createEReference(symOccEClass, SYM_OCC__SYMBOL_ID);

    symbolIdEClass = createEClass(SYMBOL_ID);
    createEAttribute(symbolIdEClass, SYMBOL_ID__NAME);
    createEReference(symbolIdEClass, SYMBOL_ID__ATTR_USE_ID);

    expressionDepEClass = createEClass(EXPRESSION_DEP);

    expressionEClass = createEClass(EXPRESSION);
    createEReference(expressionEClass, EXPRESSION__DEP_CLAUSE);
    createEReference(expressionEClass, EXPRESSION__ATTR);
    createEReference(expressionEClass, EXPRESSION__RHS_ATTRS);
    createEAttribute(expressionEClass, EXPRESSION__NAME);
    createEReference(expressionEClass, EXPRESSION__PARAMS);
    createEReference(expressionEClass, EXPRESSION__REMOTE_EXPRESSION);
    createEReference(expressionEClass, EXPRESSION__SYMBOL_REF);

    symbolRefEClass = createEClass(SYMBOL_REF);
    createEReference(symbolRefEClass, SYMBOL_REF__SYMBOL_ID);

    rhsAttrsEClass = createEClass(RHS_ATTRS);
    createEAttribute(rhsAttrsEClass, RHS_ATTRS__NAME);

    depClauseEClass = createEClass(DEP_CLAUSE);

    dependenceEClass = createEClass(DEPENDENCE);

    depAttrsEClass = createEClass(DEP_ATTRS);
    createEReference(depAttrsEClass, DEP_ATTRS__DEP_ATTRS);

    depAttrEClass = createEClass(DEP_ATTR);

    paramsOptEClass = createEClass(PARAMS_OPT);
    createEReference(paramsOptEClass, PARAMS_OPT__PARAMS);

    paramsEClass = createEClass(PARAMS);
    createEReference(paramsEClass, PARAMS__PARAMS);

    paramEClass = createEClass(PARAM);

    loopEClass = createEClass(LOOP);
    createEReference(loopEClass, LOOP__EXPRESSION_DEP);
    createEReference(loopEClass, LOOP__ATTR);
    createEReference(loopEClass, LOOP__EXPRESSION_DEP_RIGHT);

    remoteExpressionEClass = createEClass(REMOTE_EXPRESSION);

    remoteClauseEClass = createEClass(REMOTE_CLAUSE);

    remoteAttrsEClass = createEClass(REMOTE_ATTRS);
    createEReference(remoteAttrsEClass, REMOTE_ATTRS__REMOTE_ATTRS);

    remoteAttrEClass = createEClass(REMOTE_ATTR);

    expandOptEClass = createEClass(EXPAND_OPT);

    subtreeEClass = createEClass(SUBTREE);
    createEReference(subtreeEClass, SUBTREE__REMOTE_CLAUSE);
    createEReference(subtreeEClass, SUBTREE__SHIELD);
    createEReference(subtreeEClass, SUBTREE__EXPAND_OPT);
    createEReference(subtreeEClass, SUBTREE__SYM_OCC);

    shieldEClass = createEClass(SHIELD);

    shieldClauseEClass = createEClass(SHIELD_CLAUSE);
    createEReference(shieldClauseEClass, SHIELD_CLAUSE__SHIELD_SYM);

    shieldSymsEClass = createEClass(SHIELD_SYMS);
    createEReference(shieldSymsEClass, SHIELD_SYMS__SHIELD_SYMS);

    shieldSymEClass = createEClass(SHIELD_SYM);

    symCompSpecEClass = createEClass(SYM_COMP_SPEC);

    inheritOptEClass = createEClass(INHERIT_OPT);

    inheritSymsEClass = createEClass(INHERIT_SYMS);
    createEReference(inheritSymsEClass, INHERIT_SYMS__INHERIT_SYMS);

    inheritSymEClass = createEClass(INHERIT_SYM);
  }

  /**
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  private boolean isInitialized = false;

  /**
   * Complete the initialization of the package and its meta-model.  This
   * method is guarded to have no affect on any invocation but its first.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public void initializePackageContents()
  {
    if (isInitialized) return;
    isInitialized = true;

    // Initialize package
    setName(eNAME);
    setNsPrefix(eNS_PREFIX);
    setNsURI(eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    specificationEClass.getESuperTypes().add(this.getSpecifications());
    termSpecEClass.getESuperTypes().add(this.getSpecification());
    symAttrSpecEClass.getESuperTypes().add(this.getSpecification());
    symbolDefIdsEClass.getESuperTypes().add(this.getTermSpec());
    symbolDefIdsEClass.getESuperTypes().add(this.getSymAttrSpec());
    symbolDefIdEClass.getESuperTypes().add(this.getSymCompSpec());
    attrDefIdsEClass.getESuperTypes().add(this.getAttrDef());
    typeIdEClass.getESuperTypes().add(this.getExpandOpt());
    attrSpecEClass.getESuperTypes().add(this.getSpecification());
    attrNamesEClass.getESuperTypes().add(this.getAttrSpec());
    chainSpecEClass.getESuperTypes().add(this.getSpecification());
    chainNamesEClass.getESuperTypes().add(this.getChainSpec());
    ruleSpecEClass.getESuperTypes().add(this.getSpecification());
    syntLitEClass.getESuperTypes().add(this.getSyntUnit());
    syntIdEClass.getESuperTypes().add(this.getProduction());
    syntIdEClass.getESuperTypes().add(this.getSyntUnit());
    computeEClass.getESuperTypes().add(this.getComputation());
    plainCompEClass.getESuperTypes().add(this.getCompute());
    attrCompEClass.getESuperTypes().add(this.getCompute());
    defAttrEClass.getESuperTypes().add(this.getAttrComp());
    attrEClass.getESuperTypes().add(this.getDefAttr());
    attrEClass.getESuperTypes().add(this.getDepAttr());
    symbolIdEClass.getESuperTypes().add(this.getRemoteAttr());
    symbolIdEClass.getESuperTypes().add(this.getShieldSym());
    symbolIdEClass.getESuperTypes().add(this.getInheritSym());
    expressionDepEClass.getESuperTypes().add(this.getPlainComp());
    expressionDepEClass.getESuperTypes().add(this.getParam());
    expressionEClass.getESuperTypes().add(this.getExpressionDep());
    rhsAttrsEClass.getESuperTypes().add(this.getDepAttr());
    dependenceEClass.getESuperTypes().add(this.getDepClause());
    depAttrsEClass.getESuperTypes().add(this.getDependence());
    depAttrEClass.getESuperTypes().add(this.getDependence());
    loopEClass.getESuperTypes().add(this.getPlainComp());
    remoteExpressionEClass.getESuperTypes().add(this.getDepAttr());
    remoteClauseEClass.getESuperTypes().add(this.getRemoteExpression());
    remoteAttrsEClass.getESuperTypes().add(this.getRemoteClause());
    remoteAttrEClass.getESuperTypes().add(this.getRemoteClause());
    subtreeEClass.getESuperTypes().add(this.getRemoteExpression());
    shieldClauseEClass.getESuperTypes().add(this.getShield());
    symCompSpecEClass.getESuperTypes().add(this.getSpecification());
    inheritSymsEClass.getESuperTypes().add(this.getInheritOpt());

    // Initialize classes and features; add operations and parameters
    initEClass(attributeGrammarEClass, AttributeGrammar.class, "AttributeGrammar", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAttributeGrammar_Specifications(), this.getSpecifications(), null, "specifications", null, 0, -1, AttributeGrammar.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(specificationsEClass, Specifications.class, "Specifications", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(specificationEClass, Specification.class, "Specification", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(termSpecEClass, TermSpec.class, "TermSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(symAttrSpecEClass, SymAttrSpec.class, "SymAttrSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(symbolDefIdsEClass, SymbolDefIds.class, "SymbolDefIds", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSymbolDefIds_TypeId(), this.getTypeId(), null, "typeId", null, 0, 1, SymbolDefIds.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSymbolDefIds_AttrDefsOpt(), this.getAttrDefsOpt(), null, "attrDefsOpt", null, 0, 1, SymbolDefIds.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSymbolDefIds_SymbolDefIds(), this.getSymbolDefId(), null, "symbolDefIds", null, 0, -1, SymbolDefIds.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(symbolDefIdEClass, SymbolDefId.class, "SymbolDefId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSymbolDefId_Name(), ecorePackage.getEString(), "name", null, 0, 1, SymbolDefId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSymbolDefId_InheritOpt(), this.getInheritOpt(), null, "inheritOpt", null, 0, 1, SymbolDefId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSymbolDefId_CompPart(), this.getCompPart(), null, "compPart", null, 0, 1, SymbolDefId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(attrDefsOptEClass, AttrDefsOpt.class, "AttrDefsOpt", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAttrDefsOpt_AttrDefs(), this.getAttrDefs(), null, "attrDefs", null, 0, 1, AttrDefsOpt.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(attrDefsEClass, AttrDefs.class, "AttrDefs", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAttrDefs_AttrDefs(), this.getAttrDef(), null, "attrDefs", null, 0, -1, AttrDefs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(attrDefEClass, AttrDef.class, "AttrDef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(attrDefIdsEClass, AttrDefIds.class, "AttrDefIds", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAttrDefIds_TypeId(), this.getTypeId(), null, "typeId", null, 0, 1, AttrDefIds.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getAttrDefIds_AttrDefIds(), this.getAttrDefId(), null, "attrDefIds", null, 0, -1, AttrDefIds.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(attrDefIdEClass, AttrDefId.class, "AttrDefId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getAttrDefId_Name(), ecorePackage.getEString(), "name", null, 0, 1, AttrDefId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(typeIdEClass, TypeId.class, "TypeId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getTypeId_Name(), ecorePackage.getEString(), "name", null, 0, 1, TypeId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(attrSpecEClass, AttrSpec.class, "AttrSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(attrNamesEClass, AttrNames.class, "AttrNames", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAttrNames_TypeId(), this.getTypeId(), null, "typeId", null, 0, 1, AttrNames.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getAttrNames_AttrNames(), this.getAttrName(), null, "attrNames", null, 0, -1, AttrNames.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(attrNameEClass, AttrName.class, "AttrName", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getAttrName_Name(), ecorePackage.getEString(), "name", null, 0, 1, AttrName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(chainSpecEClass, ChainSpec.class, "ChainSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(chainNamesEClass, ChainNames.class, "ChainNames", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getChainNames_TypeId(), this.getTypeId(), null, "typeId", null, 0, 1, ChainNames.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getChainNames_ChainNames(), this.getChainName(), null, "chainNames", null, 0, -1, ChainNames.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(chainNameEClass, ChainName.class, "ChainName", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getChainName_Name(), ecorePackage.getEString(), "name", null, 0, 1, ChainName.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(ruleSpecEClass, RuleSpec.class, "RuleSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getRuleSpec_RuleSpecId(), this.getRuleSpecId(), null, "ruleSpecId", null, 0, 1, RuleSpec.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRuleSpec_Production(), this.getProduction(), null, "production", null, 0, 1, RuleSpec.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getRuleSpec_CompPart(), this.getCompPart(), null, "compPart", null, 0, 1, RuleSpec.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(ruleSpecIdEClass, RuleSpecId.class, "RuleSpecId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getRuleSpecId_RuleId(), this.getRuleId(), null, "ruleId", null, 0, 1, RuleSpecId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(ruleIdEClass, RuleId.class, "RuleId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getRuleId_Name(), ecorePackage.getEString(), "name", null, 0, 1, RuleId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(productionEClass, Production.class, "Production", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(altsEClass, Alts.class, "Alts", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAlts_Alts(), this.getAlt(), null, "alts", null, 0, -1, Alts.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(altEClass, Alt.class, "Alt", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAlt_SyntId(), this.getSyntId(), null, "syntId", null, 0, 1, Alt.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(syntUnitsEClass, SyntUnits.class, "SyntUnits", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSyntUnits_SyntUnits(), this.getSyntUnit(), null, "syntUnits", null, 0, -1, SyntUnits.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(syntUnitEClass, SyntUnit.class, "SyntUnit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSyntUnit_Name(), ecorePackage.getEString(), "name", null, 0, 1, SyntUnit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(syntLitEClass, SyntLit.class, "SyntLit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(syntIdEClass, SyntId.class, "SyntId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSyntId_SyntUnits(), this.getSyntUnits(), null, "syntUnits", null, 0, 1, SyntId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSyntId_Alts(), this.getAlts(), null, "alts", null, 0, 1, SyntId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(compPartEClass, CompPart.class, "CompPart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getCompPart_Computations(), this.getComputations(), null, "computations", null, 0, 1, CompPart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(computationsEClass, Computations.class, "Computations", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getComputations_Computations(), this.getComputation(), null, "computations", null, 0, -1, Computations.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(computationEClass, Computation.class, "Computation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(computeEClass, Compute.class, "Compute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(plainCompEClass, PlainComp.class, "PlainComp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(attrCompEClass, AttrComp.class, "AttrComp", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(defAttrEClass, DefAttr.class, "DefAttr", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getDefAttr_ExpressionDep(), this.getExpressionDep(), null, "expressionDep", null, 0, 1, DefAttr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDefAttr_Loop(), this.getLoop(), null, "loop", null, 0, 1, DefAttr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getDefAttr_ChainexpressionDep(), this.getExpressionDep(), null, "chainexpressionDep", null, 0, 1, DefAttr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(attrEClass, Attr.class, "Attr", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getAttr_SymOcc(), this.getSymOcc(), null, "symOcc", null, 0, 1, Attr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getAttr_AttrUseId(), this.getAttrUseId(), null, "attrUseId", null, 0, 1, Attr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(attrUseIdEClass, AttrUseId.class, "AttrUseId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getAttrUseId_Name(), ecorePackage.getEString(), "name", null, 0, 1, AttrUseId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(symOccEClass, SymOcc.class, "SymOcc", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSymOcc_SymbolId(), this.getSymbolId(), null, "symbolId", null, 0, 1, SymOcc.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(symbolIdEClass, SymbolId.class, "SymbolId", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getSymbolId_Name(), ecorePackage.getEString(), "name", null, 0, 1, SymbolId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSymbolId_AttrUseId(), this.getAttrUseId(), null, "attrUseId", null, 0, 1, SymbolId.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(expressionDepEClass, ExpressionDep.class, "ExpressionDep", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(expressionEClass, Expression.class, "Expression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getExpression_DepClause(), this.getDepClause(), null, "depClause", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExpression_Attr(), this.getAttr(), null, "attr", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExpression_RhsAttrs(), this.getRhsAttrs(), null, "rhsAttrs", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEAttribute(getExpression_Name(), ecorePackage.getEString(), "name", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExpression_Params(), this.getParamsOpt(), null, "params", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExpression_RemoteExpression(), this.getRemoteExpression(), null, "remoteExpression", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getExpression_SymbolRef(), this.getSymbolRef(), null, "symbolRef", null, 0, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(symbolRefEClass, SymbolRef.class, "SymbolRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSymbolRef_SymbolId(), this.getSymbolId(), null, "symbolId", null, 0, 1, SymbolRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(rhsAttrsEClass, RhsAttrs.class, "RhsAttrs", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(getRhsAttrs_Name(), ecorePackage.getEString(), "name", null, 0, 1, RhsAttrs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(depClauseEClass, DepClause.class, "DepClause", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(dependenceEClass, Dependence.class, "Dependence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(depAttrsEClass, DepAttrs.class, "DepAttrs", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getDepAttrs_DepAttrs(), this.getDepAttr(), null, "depAttrs", null, 0, -1, DepAttrs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(depAttrEClass, DepAttr.class, "DepAttr", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(paramsOptEClass, ParamsOpt.class, "ParamsOpt", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getParamsOpt_Params(), this.getParams(), null, "params", null, 0, 1, ParamsOpt.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(paramsEClass, Params.class, "Params", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getParams_Params(), this.getParam(), null, "params", null, 0, -1, Params.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(paramEClass, Param.class, "Param", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(loopEClass, Loop.class, "Loop", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getLoop_ExpressionDep(), this.getExpressionDep(), null, "expressionDep", null, 0, 1, Loop.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getLoop_Attr(), this.getAttr(), null, "attr", null, 0, 1, Loop.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getLoop_ExpressionDep_right(), this.getExpressionDep(), null, "expressionDep_right", null, 0, 1, Loop.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(remoteExpressionEClass, RemoteExpression.class, "RemoteExpression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(remoteClauseEClass, RemoteClause.class, "RemoteClause", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(remoteAttrsEClass, RemoteAttrs.class, "RemoteAttrs", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getRemoteAttrs_RemoteAttrs(), this.getRemoteAttr(), null, "remoteAttrs", null, 0, -1, RemoteAttrs.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(remoteAttrEClass, RemoteAttr.class, "RemoteAttr", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(expandOptEClass, ExpandOpt.class, "ExpandOpt", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(subtreeEClass, Subtree.class, "Subtree", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getSubtree_RemoteClause(), this.getRemoteClause(), null, "remoteClause", null, 0, 1, Subtree.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSubtree_Shield(), this.getShield(), null, "shield", null, 0, 1, Subtree.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSubtree_ExpandOpt(), this.getExpandOpt(), null, "expandOpt", null, 0, 1, Subtree.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
    initEReference(getSubtree_SymOcc(), this.getSymOcc(), null, "symOcc", null, 0, 1, Subtree.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(shieldEClass, Shield.class, "Shield", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(shieldClauseEClass, ShieldClause.class, "ShieldClause", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getShieldClause_ShieldSym(), ecorePackage.getEObject(), null, "shieldSym", null, 0, 1, ShieldClause.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(shieldSymsEClass, ShieldSyms.class, "ShieldSyms", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getShieldSyms_ShieldSyms(), this.getShieldSym(), null, "shieldSyms", null, 0, -1, ShieldSyms.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(shieldSymEClass, ShieldSym.class, "ShieldSym", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(symCompSpecEClass, SymCompSpec.class, "SymCompSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(inheritOptEClass, InheritOpt.class, "InheritOpt", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    initEClass(inheritSymsEClass, InheritSyms.class, "InheritSyms", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
    initEReference(getInheritSyms_InheritSyms(), this.getInheritSym(), null, "inheritSyms", null, 0, -1, InheritSyms.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

    initEClass(inheritSymEClass, InheritSym.class, "InheritSym", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

    // Create resource
    createResource(eNS_URI);
  }

} //LidoPackageImpl
